window.addEventListener("load", function () {
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var mouse = utils.captureMouse(canvas);

    var balls = [];
    var numBalls = 30,
        minDist = 200;
    // springAmount = 0.0005;
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;

    //遍历实例化球，并初始化
    for (var size, ball, i = 0; i < numBalls; i++) {
        size = Math.random() * 10 + 2;
        ball = new Ball(size, "#fff");
        ball.x = Math.random() * canvas.width;
        ball.y = Math.random() * canvas.height;
        //随机向量
        ball.vx = Math.random() * 6 - 3;
        ball.vy = Math.random() * 6 - 3;
        ball.mass = size;
        balls.push(ball);
    }
    ;

    function spring(partA, partB) {
        var dx = partB.x - partA.x,
            dy = partB.y - partA.y,
            dist = Math.sqrt(dx * dx + dy * dy);
        if (dist < minDist) {
            var alpha = 1 - dist / minDist;
            ctx.strokeStyle = utils.colorToRGB("#ffffff", alpha);
            ctx.beginPath();
            ctx.moveTo(partA.x, partA.y);
            ctx.lineTo(partB.x, partB.y);
            ctx.stroke();
        }
    }

    //移动的方法
    function move(partA) {
        partA.x += partA.vx;
        partA.y += partA.vy;
        if (partA.x > canvas.width) {
            partA.x = 0;
        } else if (partA.x < 0) {
            partA.x = canvas.width;

        }
        if (partA.y > canvas.height) {
            partA.y = 0;
        } else if (partA.y < 0) {
            partA.y = canvas.height;
        }
        for (var partB, i = 0, j = i; j < numBalls; j++) {
            partB = balls[j];
            spring(partA, partB);
        }

    }

    //绘画方法
    function draw(ball) {
        ball.draw(ctx);
    };
    //实现绘画
    (function drawFrame() {
        window.requestAnimationFrame(drawFrame, canvas);
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.beginPath();
        balls.forEach(move);
        balls.forEach(draw);
    })();

}, false);


/*================登录及滑动验证码start=====================*/
// var handlerEmbed = function (captchaObj) {
//     $("#login-button").click(function (e) {
//         var validate = captchaObj.getValidate();
//         if (!validate) {
//             $("#notice")[0].className = "show";
//             setTimeout(function () {
//                 $("#notice")[0].className = "hide";
//             }, 2000);
//             e.preventDefault();
//         }
//     });
//     // 将验证码加到id为captcha的元素里，同时会有三个input的值：geetest_challenge, geetest_validate, geetest_seccode
//     captchaObj.appendTo("#embed-captcha");
//     captchaObj.onReady(function () {
//         $("#wait")[0].className = "hide";
//     });
//     // 更多接口参考：http://www.geetest.com/install/sections/idx-client-sdk.html
// };
// $.ajax({
//     // 获取id，challenge，success（是否启用failback）
//     url: "/users/geetest?t=" + (new Date()).getTime(), // 加随机数防止缓存
//     type: "get",
//     dataType: "json",
//     success: function (data) {
//         // 使用initGeetest接口
//         // 参数1：配置参数
//         // 参数2：回调，回调的第一个参数验证码对象，之后可以使用它做appendTo之类的事件
//         initGeetest({
//             gt: data.gt,
//             challenge: data.challenge,
//             product: "embed", // 产品形式，包括：float，embed，popup。注意只对PC版验证码有效
//             offline: !data.success // 表示用户后台检测极验服务器是否宕机，一般不需要关注
//             // 更多配置参数请参见：http://www.geetest.com/install/sections/idx-client-sdk.html#config
//         }, handlerEmbed);
//     }
// });
/*================登录及滑动验证码end=====================*/